Data processing system having programmable, multiple buffers and signalling and data selection capabilities



3,297,994 MULTIPLE W. KLEIN Jan. 10, 1967 DATA PROCESSING SYSTEM HAVING PROGRAMMABLE,

BUFFERS AND SIGNALLING AND DATA SELECTION CAPABILITIES l3 Sheets-Sheet 2 Filed June 10, 1963 W. KLEIN Jan. 10, 1967 3,297,994 MULTIPLE l3 Sheets-Sheet 3 Filed June 10, 1963 N 3 JQQNEQ M Q 3 JQWWIQQQWQ QMQQUWAN wvrzwraz Ma 75 ,JZE/A Jan. 10, 1967 w. KLEIN 3,297,994

DATA PROCESSING SYSTEM HAVING PROGRAMMABLE, MULTIPLE BUFFERS AND SIGNALLING AND DATA SELECTION CAPABILITIES Filed June 10, 1963 13 Sheets-Sheet -&

14 J4 fin l/rd? Jurpar Z 5 15- 16 C- COMM/4N0 J 7 44 J 7 15 y ja \szaufmae 7 CONTEOL Ca/vrla 4 7 I a OCKI //V1/'/V 70/? M1 TfPflf/A Jan. 10, 1967 W. KLEIN DATA PROCESSING SYSTEM HAVING PROGRAMMABLE, MULTIPLE BUFFERS AND SIGNALLING AND DATA Filed June 10, 1963 SELECTION CAPABILITIES Paw END Foams P200 CMPEE-A/f Hopes l3 Sheets-Sheet 5 Sfiausucs Cow/ 52 GEM r1904 40 Jan. 10, 1967 w. KLEIN 3,297,994

DATA PROCESSING SYSTEM HAVING PROGRAMMABLE, MULTIPLE BUFFERS AND SIGNALLING AND DATA SELECTION CAPABILITIES Jan. 10, 1967 w. KLEIN 3,297,994

DATA PROCESSING SYSTEM HAVING PROGRAMMABLE, MULTIPLE BUFFERS AND SIGNALLING AND DATA SELECTION CAPABILITIES Filed June 10, 1965 L6 Sheets-Sheet NE J rs? ED552262; eiizysim J v 1 r 4* 2 2 T 132 i 19/ 3 T L 4 5 g J; e -L 7 7 7 5 5 T a 9 10 62 J0 10 1/ 1/ 1/ 2 M 2 g 13 f4 14 14 14 1.4" 1 15 15 14 13;? J7 1: 4 J7 17 1a [Z 12 CwcK SEaueMcE PAmR/ry Com/r52 g 4 FEE/57's? /54 C9 4mm: .DEcpoEe 3,297,994 MULTIPLE Jan. 10, 1967 w. KLEIN SSING SYSTEM HAVING PROGRAMMABLE, BUFFERS AND SIGNALLING AND DATA DATA PROCE SELECTION CAPABILITIES l3 Sheets-Sheet 8 Filed June 10, 1965 Jan. 10, 1967 w. KLEIN DATA PROCESSING SYSTEM HAVING PROGRAMMABLE, MULTIPLE BUFFERS AND SIGNALLING AND DATA SELECTION CAPABILITIES 13 Sheets-Sheet 9 filed June 10, 1965 w. KLEIN 3,297,994

MULTIPLE SELECTION CAPABILITIES l3 Sheets-Sheet .1

#009235 (Ear/spam? (ED195552: AQE

I AMER/wan. SPEC/1:150)

Jan. 10, 1967 DATA PROCESSING SYSTEM HAVING PROGRAMMABLE,

BUFFERS AND SIGNALLING AND DATA Filed June 10, 1965 s M f 1 f s 3 E E a m Z W p s Q 6 N M E F 00 6: 4a m w w D6 2 Z y \IIV/ fi' d J 5 4 3 F 1 1 1 2. H m 9 5 7 5 4 3 2 J n m 7 V r r F n 3 s III I 1.. ill .I \I III I l I!!! II III! D QMM e e M w 0 1 4 EE WC W0 e w 70. PWDNQN a 0 0 0 a 0 a 0 f m m C D H W F TV D s r m L R e 7 m MW w n w a w M a L u M WP% 52 17 WW I I l l l| r I. a 0 W/ il L s 90 5 PE 2 @7 Wm mm 0 Q 7 0 N Eff PIE! 7 N a N w 2. 1 I? 1 4 c a; m 0 w Sfi P W C a f D! n w Z Jan. 10, 1967 w. KLEIN 3,297,994

DATA PROCESSING SYSTEM HAVING PROGRAMMABLE. MULTIPLE BUFFERS AND SIGNALLING AND DATA SELECTION CAPABILITIES Filed June 10, 1965 13 Sheets-Sheet 1 Cl/FWV/VEL 40095:.5 Mwwlcqrlov qs'rpucrruks Jan. 10, 1967 w. KLEIN 3,297,994

DATA PROCESSING SYSTEM HAVING PROGRAMMABLE, MULTIPLE BUFFERS AND SIGNALLING AND DATA SELECTION CAPABILITIES Filed June 10, 1963 13 Sheets-Sheet 15 9 17 J6 l4 I3 I? 1/ 10 MB P G/Sm? J COMP/wen 1'01? J Eva Conic/won! l l m J i155 5,

158 mam/EL flweess L E o PQmsPQMMABLe Sec na/v- F JIaA/HL Ourpu rs PEG/57's De cause 4 Q/omry P5615 r62 $5 cops/Q 54 SIGN/EL bveenrae //V 1 f N E 1/44 FL E/N United States Patent Ofilice 3,297,994 Patented Jan. 10, 1967 3,297,994 DATA PROCESSING SYSTEM HAVING PROGRAM- MABLE, MULTIPLE BUFFERS AND SIGNAL- LING AND DATA SELECTION CAPABILITIES Walter Klein, Santa Ana, Califl, assignor to Beckman Instruments, Inc., a corporation of California Filed June It], 1963, Ser. No. 286,647 13 Claims. (Cl. 340-1725) The present invention relates to an improved digital data processing system having multiple buffer memory areas with internal signalling means associated therewith and means for selecting the data to be stored.

Although the invention is of general application, a preferred computer in which the invention may be employed is that described in the copending application entitled Data Processing System With Autonomous Input-Output Control of Walter Klein et al. filed concurrently herewith Serial No. 286,677, and assigned to Beckman Instruments, lnc., assignee of the present invention.

Digital data processors such as digital computers, controllers, etc, include an arithmetic subsystem for performing computation upon binary coded data, a memory subsystem for storing commands and data of an operation program, peripheral means for receiving data in various forms from a variety of data source devices and periph eral means for transferring data in various forms to a variety of data receiving devices. Reference is made to the Computer Handbook" edited by H. D. Huskey and G. A. Korn, published by the McGraw-Hill Book Company in I962 for a detailed description of the present state of the art for each of these subsystems.

An important feature of the present invention is the provision of multiple butler areas within the memory subsystem associated with a given input-output channel. One application for such a multiple buffer is to automatically segregate the data within the memory subsystem. For example, each butler may have a different capacity determined by the storage capacity of the memory and the manner in which the data is to be segregated. In a preferred embodiment of the invention, the memory cell containing the end address of each butler area includes an additional bit position whose value determines which butler area is used following the end address. Thus, the data is exchanged with the following buffer area or with the first buffer area of the group depending upon the binary value of this bit position in the last current address.

Another feature of the invention is that it provides programmable data selection. Digital computers of the type described above must often handle large blocks of data words as, for example, long magnetic tape records. Frequently, however, only a small portion of the whole block is to be processed. In this invention, it is possible to select the desired data portions from any size portion block without the necessity for first storing the whole block in the memory thereby substantially increasing the efficiency of. memory storage.

Another advantage of the invention is the provision of means for generating unique signals whenever a particular one of the buffer memory areas reaches its end address. The signals may be used to coordinate several tasks which are being performed simultaneously and independently. Thus, the signals may be used to stop or start other data exchanges or data processing. Specifically, signals may be used for energizing the start and stop lines of the input-output channels of the invention of Walter Klein et aL, supra, during the novel cyclic input-output mode of the data processing system disclosed and claimed therein.

Other and further objects, features and advantages of the invention will become apparent as the description proceeds.

FIG. 1 is a simplified block diagram illustrating the overall system organization of the computer;

FIGS. 2A and 2B are a detail block diagram of the computer system;

FIG. 3 is a schematic illustration of the gate circuitry interconnecting the memory buffer register and the I/O buffer register;

FIG. 4 is a partially block, partially schematic illustration of the sequence counter and control of the I/O master control;

FIG. 5 is a schematic illustration of the channel priority access control;

FIGS. 6A-6H are How charts illustrating and defining the apparatus and structure of the I/O master control;

FIG. 7 illustrates schematically the internal address generator;

FIG. 8 illustrates a channel buffer block comprising four sets of three memory cells each;

FIG. 9 is a detailed block diagram of the input-output register;

FIG. 10 illustrates schematically the channel buffer registers, the I/O master control buffer register, and interconnecting gate circuitry;

FIG. 11 is a block diagram of the disconnect and stop circuitry of each channel control unit; and

FIG. 12 is a schematic illustration of the programmable signal generator.

GENERAL DESCRIPTION OF COMPUTER Referring now to FIG. 1, the basic system organization of the computer is illustrated. The system comprises three major components: the memory subsystem 10, the general purpose arithmetic subsystem 11 and the inputoutput master control 12. The input-output control operates autonomously after being initiated by an I/O command from the arithmetic system 11 via I/O set-up line 13. Both the general purpose arithmetic subsystem 11 and the input-output control 12 share the common memory 10. Their use of the memory is time shared, the arithmetic subsystem being interrupted upon application of a signal from the I/O master control via interrupt control line 14 when the I/O master control requires the memory. Accordingly, the inpuboutput control has prion ity over the arithmetic subsystem as regards use of the memory subsystem 10.

The input-output master control establishes communication paths with a plurality of channel control units 15. In the computer described herein, eight such channels are designated as channel 0 through channel 7. As will be apparent from the following description, the specific number of channels is determined by the user and the length of the command word used. A plurality of peripheral devices comprising receivers and data transmitters are connected in turn to each of the channel control units. In the specific machine described, sixteen such devices may be connected to a particular channel although again the specific number more or less may be employed according to the user and the command word length. By way of specific example, data source devices include electric typewriters, punched paper tape readers, punched card readers and magnetic tape units. Examples of data receiving devices are electric typewriters, high speed printers, alpha numerical displays, paper tape readers, and magnetic tape units.

The control console 17 is connected directly to the arithmetic subsystem 11 and permits direct communication between the operator and machine, bypassing the input-output master control 12.

Brief description of computer operation Initiation of command. In brief, the overall operation of the computer is as follows: Input-output and arithmetic commands are read by the general purpose arithmetic subsystem 11 from the memory 10. These commands are distinguished one from the other and the arithmetic commands utilized within the arithmetic subsystem. Upon receipt of an input-output command, the command is distinguished by the arithmetic subsystem which then attempts to transfer the command word to the inuput-output subsystem 12 via the I/O set-up line 13. After acceptance of the command Word by the input-output master control 12, the arithmetic subsystem 11 is free to continue its program while the input-output system controls the execution of the command.

As described above, the input-output portion has priority over the arithmetic portion of the computer regarding the use of the memory 10. For effecting this operation, the input-output master control 12 generates interrupt signals over the interrupt line 14 for the arithmetic subsystem during various phases of the input-output operation which require the memory 10. For example, if a single access memory is utilized, the arithmetic subsystem will be interrupted whenever data is being read from or into memory from the input-output master control.

Selection of channel and peripheral device. The command word registered in the input-output master control 12 designates one of the eight input-output channels, one of sixteen peripheral devices connected to that channel, and the mode by which the data will be handled. The input-output master control, utilizing this information, makes a path available between the peripheral device and the input-output master control or, if a connection to an external device has already been made, the command may serve to break the connection. After a connection is made to a particular channel control unit, the channel itself retains this connection and controls the exchange of data between the selected peripheral device and the input-output master control according to the operating mode. The channel disconnects the external device either automatically on completion of data transfer through a termination signal generated by the external device or through a DISCONNECT command received from the arithmetic subsystem.

Dara exchange; address generator. For all commands except the control mode, described hereinafter, a data word or words are to be exchanged between the peripheral device and the memory. The memory address where a data word is to be stored or to be read from is obtained by the input-outputoutput master control 12 from the memory 10. These memory addresses are stored at memory locations unique to each channel. When a single word is to be transferred, the address where the word is to be stored or read from is generated by the input master control. When blocks of data words are to be exchanged, the memory address for a given channel must necessarily be changed so that each data word is stored in a discrete memory location. Therefore, the inputoutput master control 12 includes address modification structure for changing the memory address for each data word.

Another operation performed by the input-output master control 12 in combination with a channel control unit 15 is to allow each peripheral device to operate at its own time rate, i.e. permit the peripheral device to operate asynchronously from the computer which operates synchronously from an internal clock.

DETAILED DESCRIPTION OF THE INVENTION A more thorough understanding of the invention may be derived from FIGS. 2A and 213 wherein is shown a substantially detailed block diagram of the invention. In this diagram, double lead lines designate multiple busses for transmitting command and data words. Generally, such a bus comprises one lead for each bit of a data word and an additional parity bit. In the specific embodiment described, the data word comprises eighteen ing to the different numbers of controls required between various portions of the computer.

Memory subsystem The memory subsystem 10 may comprises a high speed magnetic core memory unit 25. A representative such memory has the capacity of 32,768 eighteen bit words. The memory location is specified by the memory address bus 26 and read and write operations are respectively controlled by the read control line 27 and the write control line 28. When a read pulse is applied to the memory unit 25, the contents of the memory location specified by the memory address bus 26 are extracted from memory and transferred via the memory read bus 29. Conversely, when a pulse is applied on write control line 28, the data on memory write bus 34 is transferred into the memory location specified by the memory address bus 26. Section 12 of the Computer Handbook edited by H. D. Huskey and G. A. Korn published by the Mc- Graw-Hill Book Company in 1962 may be consulted for a more detailed description of magnetic core memory de vices.

General purpose arithmetic subsystem A command word applied to the memory read bus 29 is transferred from the memory unit 25 to the memory buffer register 30 and the command register 31 of the arithmetic subsystem 11. After the command word is read out of the memory into the command register 31, it is sensed by decoder 32 as to the specific type of command. If the command is an input-output command, an appropriate output signal is supplied to the arithmetic subsystem controller 33.

Controller 33 attempts to transfer the input-output command word to the input-output master control 12 by signaling the sequence counter and control 40 of the I/O master control via I/O set-up line 13. The input-output subsystem accepts commands only for those channels which are not already busy with the exception of a DIS- CONNECT input-output command which sets a channel to the not busy state. If a channel is busy, any other command is retained in the arithmetic subsystem until accepted by the I/O master control 12. After acceptance of the command by the input-output master control 12, the controller 33 of the arithmetic subsystem resets the memory buffer register 30 and command register 31 so that the arithmetic subsystem is free to continue its program while the input-output subsystem controls the execution of the input-output command.

Input-Output master control I/O bufier register. When the input-output master control accepts a command, the input-output command is transferred from the memory buffer register 30 of the arithmetic subsystem into the I/O master control buffer register 41 via command bus 42. As shown in FIG. 3, both the memory buffer register 30 and I/O master control buffer register 41 may comprise eighteen bit storage registers. A suitable gating network is associated with each stage of the I/O buffer register, a portion being shown in FIG. 3. Each lead of the command bus is connected to an input of a respective AND gate exemplified by AND gates 43, 44 interconnecting the one and eighteen bit stages, respectively of the registers. The other input of each of these AND gates is driven by the output of amplifier 45. The input of this amplifier is connected to AND gate 46 whose inputs are respectively connected to the computer clock 47 and the I/O master control sequence counter and control 40. The coincidence of a clock pulse and a signal from sequencer 40 enables AND gate 46 to energize AND gates 43, 44 (and others not shown). The information in each stage of the memory bufier register 30 is consequently sent through AND gates 43, 44 and others into the respective stages of the I/O buffer register 41. Similar gating arrangements are used in conjunction with each of the registers in the I/O master control and the individual channel control units described below.

Input-Output command format. The format of the input-output command is also illustrated in FIG. 3. C (bits eighteen, seventeen, sixteen, fifteen and fourteen) designate the command as an input-output command. This portion only is read by the decoder 32 of the arithmetic subsystem. Bit fourteen designates whether the command is an input or an output command. EXM (bits thirteen and twelve) specifies one of four chan el operating modes, described in detail hereinafter. EXN (bits eleven, ten and nine) specifies a particular one of the eight channels. EXC (bits eight, seven, six and five) contain control information for the external device, e.g. a command to a magnetic tape unit to rewind its tape. EXA (bits four, three, two and one) specifies one of the sixteen peripheral units of the channel defined by EXN.

[/0 sequence counter and control. The sequence counter and control 40 is illustrated in detail in FIG. 4. As shown therein, an encoder unit 50 having sixteen distinct input terminals numbered 0 through is connected to a four stage flipfiop counter 51 by eight connecting leads 52. Counter 51 is connected by eight output leads 53 to a decoder unit 54 having sixteen distinct output terminals. Encoder 50 converts the sixteen-line input to a binary encoded eight-line readout and decoder 54 reconverts the eight-line output of counter 51 to a sixteenline output.

The particular count between zero and fifteen registered by counter 51 is determined by a gating network con necting the output of decoder 54 and the input of encoder 50, this network being exemplified by the four AND gates 55, 56, 57 and 58. Particular operations are performed at predetermined counts registered in the counter 51, as described hereinafter. The counter automatically advances in a predetermined sequential order determined by the input signal to the gating network. For example, AND gate 56 determines the transfer of the I/O command word from the memory buffer register in the following rnanner: The counter 51 is initially in a reset state with all flip-flops registering zero and the zero output terminal of the decoder energized. Upon coincidence of a clock pulse from the computer, clock 47 an an output from the arithmetic subsystem controller 33, AND gate 56 is energized whereupon a pulse is supplied the 14 input terminal of encoder 50. Flip-flop stages of counter 51 are then triggered to assume the binary equivalent of the number fourteen. As a result, an output signal appears on the 14 output lead of decoder 54. This signal activates the I/O master control butter register 41 so that it duplicates the contents of the memory buffer register 30 as described hereinabove. The functions of the other AND gates 55, 57 and 58 are described below.

Flow diagram of I/O command The operation of the I/O master control sequence counter and control 40 may be further illustrated by reference to the flow diagrams of FIGS. 6A and 6B. In this type of diagram, a rectangle represents a processing function performed at the designated sequence count, a diamond represents a decision performed by circuitry within the I/O master control and a circle represents a signal supplied for performing additional processing functions. As shown, when the sequence counter and control 40 is in a reset state (count 00) it is available for access from either the arithmetic subsystem 11 or a channel control unit 15 previously connected to the I/O master control. As described above, a signal from the arithmetic subsystem signifies an {/0 command which causes the counter 51 of the control 40 to proceed to a count of fourteen (14). As described in detail below, a signal from a channel control unit 15 signifies either that a data exchange is required whereupon the counter 51 advances to a one (01) count or it signifies that channel flags are required whereupon the counter 51 advances to a three (03) count.

FIG. 6B is a how diagram illustrating the complete I/O command function. At the sequence count of fourteen, the I/O buffer register 41 is loaded with the command data word temporarily stored in the memory bufier register 30 of the arithmetic subsystem. A decision is then made as to whether the command in the I/O buffer register is a disconnect command. If it is (YES), the sequencer control 40 disconnects the channel designated by the command word and the sequence counter and control are reset to their zero states. If it is not a disconnect command (NOT), a further decision is performed as to whether the designated channel is already busy. If it is not, the sequence counter advances to a count of 15 and sets up the channel in the manner described hereinabove. The sequence counter is then reset. If the channel is already busy, a still further decision is made for determining whether the channel requires a data exchange or flags, the sequence count being set to a one count for the former and a three count for the latter. These functions are described in detail below.

Channel sclccn'on and transfer of command word to selected channel. A decoder 59 is connected to the eleven, ten, and nine bit stages of the I/O butler register 41 and supplies a signal at one of its eight outputs 60 for connecting the selected channel to the I/O master control. By way of example. if channel No. 7 is designated by the EXN portion of the stored l/O command word, a signal is placed upon signal lead 61 connected to three buli'er registers within the channel control unit 15 of channel 7.

Channel control unit Channel lmfcr register, channel inpnr-onrgmt register and clmrtncl mode rcgi'srcr. Each channel control unit includes an eighteen bit channel butler register 62, a one bit input/output register 63 and a two bit mode register 64. The signal on lead 61 actuates gates associated with the channel butler register 62. the input/output register 63 and the mode register 64 whereupon the entire contents of the HO butler register are duplicated in the channel butler register 62, the fourteen" bit is duplicated in the input/output register 63 and EXM is duplicated in the mode register 64.

Conncctz'on between channel control unit and peripheral device. Each channel control unit includes a channel sequencer control 65 which both transmits and receives control signals from the peripheral unit 16 via respective control lines 66, 67. The action of the channel sequencer and control is initiated by the I/O master control sequencer counter and control via control line 68. When the channel registers 62, 63 and 6-4 have been filled from the I/O buffer register 41, all of the peripheral units 16 of the selected channel are activated. Each of these peripheral units are connected to the channel buffer register 62 by an output bus 69 and an input bus 70. When the peripheral units are activated, they are each connected to the channel butler register 62 via the output lead 69. Each of these units includes an individual decoder adapted for sensing the peripheral equipment address portion (EXA) of the 1/0 command word stored in the channel butler register. One and only one of the decoders will perform and this peripheral unit connects to the output bus 69, the input bus 70 and the set of control lines.

Channcl priority access control One or all of the eight channels may be connected to the I/O master control in the manner described hereinahove. All channel control units may simultaneously and independently exchange data with one peripheral unit each, since each channel unit contains one channel buffer register 60. Only one channel unit at a time, however, may exchange data with the I/O master control unit. The flow of data between the memory subsystem 10 and the individual channel butler register via the input-output master control is regulated by the channel priority access control 75. As shown in FIG. 2B, the unit includes a separate input 76 for each of the eight channels and an output 77 indicating the selected channel, this output being connected to the sequence counter and control 40 and internal address generator 78 of the I/O master control 12.

A preferred embodiment of the channel priority access control assigns a predetermined priority access to each channel, e.g. channel No. has the lowest priority; channel No. 1 the next higher priority and so on. This arrangement guarantees that in case of simultaneous requests for more than one channel, the channel with the highest priority is served first. This time sharing makes it possible to maintain independent data flow paths simultaneously between a number of memory storage areas and various external peripheral devices operating at different data rates. The peripheral devices are connected to their channels such that for any given data exchange conditions, the device rates correspond to the channel priorities. Thus, the slowest peripheral units are connected to the lowest priority channel; correspondingly, the highest-speed peripheral units are connected to the highest priority channel.

A detailed schematic of the channel priority access control is illustrated in FIG. 5. The highest priority channel No. 7, connected to input line 76a is connected to a channel priority register 8t} via AND gate 81. Another input of AND gate 81 is connected to the computer clock 47. Channel priority register 80 is an eight stage register having three output leads 78a, 78b and 780 designating in binary code the activated stage of the register 80. As described hereinafter, these leads form a portion of the internal address generator. Other portions of the complete system require a discrete signal representing the connected channel. This function is provided by the priority register decoder 84 which decodes the binary coded signal on leads 78a, 78b and 780 and activates a particular one of its output leads 85 corresponding to the number of the interconnected channel.

The next highest priority channel (channel No. 6 connected to the input line 76b) is connected to the channel priority register 80 via an AND gate 82 having additional inputs coupled to the clock 47 and to the preceding input 76a via an invt rter 86. In similar manner, the succeeding input channel (channel No. connected to input line 76c) is coupled to the channel priority register 80 via AND gate 83 having other inputs coupled to the clock and to the preceding inputs 76a and 76b via inverters 86, 87.

In operation, if there is a signal on lead 76a upon occurrence of a clock pulse, priority register 80 registers seven" in binary code. No other stage may be set ON since the signal on lead 760, after inversion by inverter 86, blocks closing of each of the succeeding AND gates. Similarly, if there is no signal on lead 76a upon receipt of a clock pulse, but there is one on line 76b, register 80 will register six in binary code. No succeeding stages will be set on since the signal on lead 7611 blocks energization of AND gate 83 and each of the succeeding AND gates (not shown). In like manner, any higher priority channel will block those below it by identical logic gating elements (not shown).

INTERNAL ADDRESS GENERATOR The channel sequencer control 65 of each channel sig nals the channel priority access control 75 when it is ready for a data exchange with the memory subsystem 10. As described above, the priority access control determines which channel is connected to the memory when there are simultaneous requests from more than one channel. After a particular channel is connected to the I/Q master control 12, the internal address generator 78 generates the memory address unique to that channel over the address bus 90.

A detailed schematic of the internal address generator is illustrated in FIG. 7. As shown, the address bus comprises fifteen leads of which the Nos. 8 through 15 leads are grounded (binary zeros). Leads No. 1 and No. 2 are derived from the sequence counter and control and designate whether the address sought is the current, start or end address. These different addresses are described in detail below. Lead Nos. 3 and 4 are connected via an eight-way switch to the address section register ltll of the particular channel connected by the priority access control 75. This structure is also described in detail below, it sufficing to state at this point that these leads designate in binary code one of four butler areas in the magnetic core memory unit 25. Leads Nos. 5, 6 and 7 comprise leads 78a, 78b and 78c at the output of the channel priority register 80 (FIG. 5). As described above, these leads designate in binary code the channel connected by the priority gating network of the channel priority access control 75.

Accordingly, the internal address generator automatically generates with a minimum number of hardware components an address unique for each of the eight channels. This address is connected to the magnetic core memory unit 25 via the address bus 90 and the memory address switch 102, the latter switch being controlled by the sequence counter and control line to selectively connect either the internal address generator 78 or the U0 address register 116 to the memory address bus 26. The specific portion of the memory designated by the internally generated address may be transferred into the 1/0 master control butler register 41 or the address register 11!) upon application of a pulse on read control line 27. As described above, the computer uses an indirect address system wherein the address information so derived designates still another address of the magnetic core memory unit 25 at which data is to be transferred into or out of by the peripheral unit connected to the channel selected by the priority access control 75. The manner in which this address information is used and modified by the 1/0 master control unit 12 is described in the following section.

ADDRESS MODIFICATION STRUCTURE Overall description Each channel is associated with at least one set of three memory cells, each cell having a storage capacity of 18 binary bits in the specific example described herein. These cells provide an indirect address of the memory subsystem since each cell provides addresses where data words are to be stored into or read out of. A significant feature of the present invention is that of providing a plurality of buffer sets for each channel. Four such buffer sets are shown in FIG. 8 and together comprise a channel buffer block. Each set of three cells controls a buffer area located anywhere in the magnetic core memory unit 25 and of any length permitted by the storage capacity of the memory.

In each buffer set, the current address and bits A, B and C are stored in one cell, the end address and bits D, E and F are stored in another cell and the start address is stored in the remaining third cell.

The binary value of the B bit is used for indicating the capacity of a butler storage area. The value of B is set to 0 when the butter has a capacity of a single word; the binary value of B is set to one when the buffer has a capacity for more than one word.

The binary values of the A, C, D, E and F bits indicate certain predetermined system functions and information supplying external signals as described below.

In brief, the operation of the address modification portion of the I/O master control is as follows: The current address is read from the magnetic core memory unit 25 into the I/O master control buffer register 41. This address is then transferred into the address register of the I/O master control and directed to the memory adress bus 26 via memory address switch 102. For input data exchanges. the data stored in the channel butler 62 of the selected channel is read into the butler register 41 of the I/O master control and subsequently transferred into the butler of the memory subsystem determined by the current address stored in the address register 110. For output data exchanges, the data is read from the buffer of the memory subsystem 10 as determined by the address stored in the address register 110 into the buffer register 41. Subsequently. this data is transferred into the channel buffer register of the selected channel. All of these operations are under the control of the sequence counter and control 40 of the I/O master control as described hereinafter.

For buffer areas of the magnetic core memory unit 25 having capacities greater than one word (B 1). the current address must be modified for each data word exchanged. This operation is performed by reading the current address into the I/O master control. incrementing it by one. and comparing the resulting address with the end address. If the two addresses are equal. the C bit is set to one. When used the next time. the C bit then restores the current address to the start address rather than incrementing it. At the same time. C is then set to zero. The incremented current address or the restored start address is the effective memory address.

Flow chm! description of address modification The address modification structure and procedures briefly described hcrcinabove are described in more detail by reference to the flow charts of FIGS. 6C through 6H.

B20. Referring now to FIG. 6C. the sequence counter and control 40 is initially in a reset state (count 00) at which count a data request is received from the channel priority access control 75. At such time, the sequence counter advances to a count of one (01) and initiates gates connected to the I/O master control butler register 41 for transferring thereto the current address from the magnetic core memory unit 25. As described hereinabove, this current address is selected from the cell unique to the channel requesting a data exchange. By way of further explanation. the detailed illustration of sequence counter and control 46 of FIG. 4 illustrates this particular operation. As shown, AND gate 55 is actuated when counter 51 is in the 00 state upon coincidence of a clock pulse and an output signal from the channel priority access control 75. The output of this AND gate is connected to the No. 1 input of encoder 50 which causes counter 51 to advance to the 01 count and provide a signal on the N0. 1 output of decoder 54 directing that the current address be read.

Referring again to FIG. 6C. the sequence counter advances to 03 at which count the control 40 causes the end address to be read into the NO master control address register 110. As shown in FIG. 5. the current. start and end addresses are modified simply by changing the binary values of the 1 and 2 bits of the internally generated address. The sequence counter then advances to the 04 count and the end address is rewritten into the magnetic control memory unit 25 from the address register 110 in order to preserve this address for subsequent data exchanges. Signal flags may also be produced at this step in the manner described below. The counter then advances to the 06 count at which count the current address is both rewritten into the memory core from the butter register 41 and transferred into the address register 110. A decision is then performed by the sequence control counter and control 40 depending upon whether or not the original I/O command word specified an input or output data exchange and whether or not the value of the A bit is zero or one. If the input-output register 68 of the select channel specifies an input operation, and 14:0, the sequence counter is advanced to the 09 count. If an output operation is specified, and A 0, the sequence counter advances to a count of eleven (l1). If the value of Azl, the sequence counter is reset to zero.

Dam exchanges; Input. The steps constituting actual data exchange are illustrated in flow diagrams of FIGS. 6F and 6G for input and output data exchanges respectively. As shown in FIG. 6F. the sequence counter 40 at the count of nine (09) performs the dual functions of preparing the magnetic core memory unit 25 by vacating the memory cell designated by the current address (this address being stored in the address register and operatively connected to the memory address switch 102). At count 09, the data stored in the selected channel butler register 62 is also transferred into the [/0 master control butler register 41. Subsequently. at the count of ten (10). the channel data now stored in the buffer register is written in the designated butler area of the magnetic core memory unit 25 via the memory write switch 112 and memory write bus 34. The sequence counter then resets to the zero (00) state at which time all of the registers in the I/O master control are reset to zero.

Dara exchange; Output. Referring now to FIG. 66. the sequence counter 40 at the count of eleven (11) causes the data stored at the memory location located by the address generator (now temporarily stored in the I/O address register 110) to be read from the memory into the I/O buffer register 41. At the following sequence count of twelve (:12). the data is both rewritten back into the memory and duplicated in the channel butler register 62 of the selected channel. The channel sequencer control 65 then transfers this data into the selected peripheral unit. After sequence count twelve, the sequence counter resets to the zero (00) state.

Counter (int! control circuitry for performing dam exchanger. Circuitry for performing the data transfers illustrated in FIGS. 6F and 6G is shown in FIG. 4. AND gates 57 and 58 are both responsive to a sequence count of six (06) and to a zero A bit. An input/output register within the I/O master control 12 has one output designating an input data exchange to AND gate 58 and another output designating an output data exchange to AND gate 57. the outputs of these AND gates being respectively connected to the No. 9 and No. 11 inputs of encoder 50 whereby the counter 51 is advanced to the nine count upon coincidence of an input signal and clock pulse and to an eleven count upon coincidence of an output signal and clock pulse.

Iilpllf-OHFPIH register. Detailed structure illustrating the input'output register 120 is illustrated in FIG. 9. A 2X8 selector switch has a plurality of doublet inputs connected to each input/"output register 68 of the respective channels and eight inputs connected to the priority register decoder 84 described hercinabove. Thus. the input or output signal specified at the output of switch 125 corresponds to the state of the input/output register designated by the priority control 75.

The circuitry for transfer of data between the channel buffer register and the I/O master control buffer register is illustrated in detail in FIG. 10 wherein are shown the eighteen bit butler registers 62 of channels Nos. 0 and 7 and an eighteen bit I/O master control register 41 connected thereto by an ANDOR gate arrangement. Thus, the one stage of the channel No. 0 butler register is con nectcd to the one stage of the master control butler via AND gate and an OR gate 131. Similarly. the one stage of the channel No. 7 buffer register is connected to the input of the one stage of the butter register 41 via AND gate 132 and OR gate 131. AND gates 133 and 134 and OR gate 135 similarly interconnect the eighteen stage of the channel butler register to the input of the eighteen stage of butter register 41. Similar AND-OR gates (not shown) interconnect the other stages.

AND gates 132 and 134 associated with the channel No. 7 buffer register are driven by amplifier connected to the output of AND gate 141, the latter AND gate being actuated by the coincidence of a clock pulse, a signal from the sequence counter and control 40 and the selection of channel No. 7 by the priority register decoder 84. Accordingly, upon the coincidence of these three signals, the AND gates 132 and 134 are actuated and the data stored in the channel No. 7 buffer register is duplicated in the master control buffer register 41. In like manner, AND gates 131 and 133 associated with the channel No. buffer register are driven by amplifier 142 and AND gate 143, which gate in turn is responsive to the simultaneous occurrence of a clock pulse, a signal from the sequence counter and control 40 and the selection of channel No. (l by the priority access control 75 as designated at the output of the piority register decoder 84.

B-flag=1; C flag initially zero. FIG. 6D comprises a flow chart illustrating the address modification when the current address is initially different than the end address. As shown, the initial operation at a sequence count of one is identical to that when the B flag is zero i.e., the current address is read from the memory into the I/O buffer register. At this time, the I/O master control senses that the B flag equals one. The end address is then read into the I/O address register 110 from the memory and in addition the value stored in the buffer register 41 is incremented or increased by a binary adder 150 (FIG. 2A) which performs a simple binary addition on the address stored in the butler register 41. The next operation is performed at the sequence count four (04) when the end address is re-written into the memory from the I/O master control address register 110 and simultaneously compared with the current address stored in the buffer register 41 by the comparator 151. The next operation is performed at the sequence count of six ((16) when the C flag is set to one if the end address equals the current address. The modified current address is then written into the memory from the I/O buffer register 41 and the value of the I/O buffer register transferred to the I/O address register 119. If the end address does not equal the current address, the incremented current address with the C flag equal to zero is written into the memory from the I/O buffer register 41 and also transferred to the I/O address register 110. Following the sequence count of six, the data transfer occurs as detailed in FIGS. 6F and 6G of the A bit is zero as described above wherein the address temporarily stored in the address register 112 specifies the memory core in which data is to be read into or from. If the A bit equals 1, the sequence counter and control 40 is immediately reset to its zero state as described hereinabove.

B flag l; C flag l. FIG. 6E. When the C flag is initially equal to information is available at the sequence count one that the current address is equal to the end address. Accordingly, the start address is read into the 1/0 buffer register 41 at the sequence count three (03). At the sequence count of four (04), the start address is re-written into the memory from the I/() address register 110 and the C flag bit set to Zero in the address register 110. At the sequence count six (06), the address in the address register 110 is written into the memory as the current address with the B flag equal to one and the C flag equal to zero. This current address is also retained in the address register 110 and serves as data address for the selected channel in the manner described hereinabove.

COMPLETION OF INPUT-OUTPUT FUNCTION Operational modes As described hereinabove, the original data command word read from the rogram stored in the memory subsystem 10 included EXN comprising bits 13 and 12 which specify one of four channel operating modes, namely the control mode, the single word mode, the single block mode and the cyclic block modes. Whichever mode is specified by the command word determines the manner in which the input-output operation is terminated.

Channel disconnect and stop sequencer and control.

This operation is illustrated in one, the

Each channel control unit 15 includes a disconnect and stop sequencer and control as shown in FIG. 11 responsive to mode decoder 161, the I/O sequence counter and control 40, start and stop control lines 162, 163 and terminate line 164 connected to the peripheral units 16. The disconnect and stop sequencer and control 160 provides a pair of output lines 165 and 166 over which signals are supplied to the remainder of the channel control ele ments including the registers and into the peripheral units for terminating or suspending the input-output operation. The function of the disconnect and stop sequencer and control 160 will be described in relation to the four operating modes in the following paragraphs.

Comm! mode. The control mode is designated by a command word having binary Zeros for the thirteen and twelve bits. The values of these bits are sensed by the mode decoder connected to the channel mode register 64. After receipt of the data command by the designated peripheral device, a disconnect and stop signal is supplied line 165 of the disconnect and stop sequencer and control 160 and disconnects the peripheral device and returns the channel to the not busy" state. Thus. no memory cell is aliected by a control mode command. Such commands include, for example, a rewind tape command for a pcripheral magnetic tape unit and a DISCONNECT command which is accepted by a busy channel for disconnecting the peripheral device.

Single worn mode. This mode is designated by bits thirteen and twelve of the command word having the binary values zero and one respectively. After a single word is transferred between the selected peripheral device and any one memory cell as defined by the address modification structure, the disconnect and stop sequencer and control 160 supplies an output over its output lead 165 to reset the channel control unit to the not busy" state and disconnects the peripheral unit.

Single block mode. This mode. designated by one and zero values respectively for bits thirteen and twelve, results in an output on line 165 of the disconnect control 160 after a block of words has been transferred between selected peripheral unit and a block of memory cells as specified by the address modification structure.

Cyclic block modes. The cyclic block mode is designated by bits thirteen and twelve each having a binary one value. Reference is made to the copending application of Walter Klein et al. entitled Data Processing Systcm With Autonomous Input-Output Control, filed concurrently herewith, Serial No. 286,677, for a more detailed description of this mode. Briefly, in the cyclic block mode, blocks of words are continuously transferred between the selected peripheral unit and a block of sequential memory cells as defined by the corresponding address modification structure. At the end of a block, the start conditions are restored and the transfer continues until DISCONNECT command is received from the memory subsystem 10 via the arithmetic subsystem 11. Thus, so long as the mode decoder 161 senses a cyclic mode condition, a signal is not applied to the disconnect and stop line 165 unless and until a disconnect COMMAND is re ceived.

In the cyclic mode only, a channel accepts start and stop pulses over the respective lines 162 and 163. These signals may be generated by SIGNAL commands described hereinafter or by other channels. On application of a stop signal, a stop signal is supplied at the output of line 166 to the channel which prevents the exchange of data but permits the peripheral unit to remain connected to the channel. A stop signal may be applied at any time. However, the channel will only stop after having reached the end of a buffer memory section.

In effect, the cyclic mode enables a channel and peripheral unit to remain connected and available for data transfer without requiring that a command be programmed in the memory subsystem and read by the arithmetic subsystem. The lattcr type operation not only requires the MULTIPLE BUFFERS As described hereinabove, and illustrated in FIG. 8, each channel has associated with it four sets of three memory cells each. One application for such a multiple buffer for example is to automatically segregate the data within the memory subsystem.

At the end of each buffer, the value of the D bit (bit eighteen) in the end address determines whether the succeeding buffer is used or instead a reversion to the start address of the first butler. By way of specific example, when the end address of buffer No. is registered in the address register 110 and the D bit is zero. the next address used is the start address of this same butTer. If, however, the D bit is one, the next address utilized is the start address of buffer No. 1. Thus. the first butter having a D bit equal to zero is the last buffer used, after which recycling to the start address of buffer No. 0 occurs. Although FIG. 8 shows four buffer sets. this invention is not limited to that number but may be expanded according to the capacity of the memory.

Mechanization of D bit. The manner in which the D bit is utilized to control the multiple butler block is illustrated in FIG. 7. As shown therein, counter 175 is responsive to the coincident outputs of comparator 151 and the 18 register of the address register 113 via AND gate 176 and registers a count for each D bit equal to one. Connected to counter 175 is the address selection register 101 of the channel control unit. For a four buffer unit, this register is a two flip-flop register adapted for register. ing the binary signals corresponding to the butters zero, one, two and three. The output of this register automatically designates the address of the buffer memory area by designating bits three and four of the internally generated address as described above.

PROGRAMMABLE DATA SELECTION Digital computers of the type described above must often handle large blocks of data words as, for example, long magnetic tape records. Frequently, however, only a small portion of the whole block is to be processed. A significant advantage of the present invention is that it is possible to select the desired data portions from any size block without the necessity for first storing the whole block in the memory. Furthermore, the selection is performed without the assistance of the general purpose arithmetic subsystem 11.

This operation is performed by pre-programming the A bits to selectively binary zero or one values. When the A bit is zero, the data exchanged between the memory and the peripheral unit occurs at sequence counts nine and eleven in the manner described above. If, however, the A bit in a particular buffer section is programmed as a binary ONE, the memory operation is inhibited by causing the sequence counter and control to revert to its reset (00) state after reaching the six (06) sequence count. Accordingly, for those butters having an A bit programmed at one, no memory storage capacity is required. This butter set then acts merely as a counter for the number of data words which are not to be stored in or read from the memory.

By way of specific example, if a block of words is required from a magnetic tape but those words between 100 and 200 are not required, a set of three memory buffers are utilized in which the first is programmed for a length of one through ninety-nine and a zero A bit and the second programmed from one hundred to two hundred with an A bit one. The third buffer is then used for those 14 counts above 201 with its A bit zero. In operation, the first 99 words are stored in butter one and the remaining words stored in buffer three, with, however, no memory storage being required for those words deleted from 100 to 200. A substantially increased etficient utilization of the memory is thereby provided.

PROGRAMMABLE SIGNAL GENERATION In data processors capable of performing several tasks simultaneously and independently, it is important that these tasks be coordinated or timed properly with respect to each other. More specifically, in the multiple data exchange system described hcreinabove, processing of data by the arithmetic subsystem may depend upon the completion of a data input. Also, the output of data may depend upon completion of certain data inputs.

A significant feature of this invention is the provision of means for generating unique signals whenever a particular one of the buffer sets of FIG. 8 reaches its end address. These signals may for example be used to start or stop other data exchanges or data processing. These signals are generated for each E or F bit which has the binary value one. Any channel may thus generate eight signals, available on separate wires, corresponding to the E and F bits associated with each of the four buflers of FIG. 8.

Mechrmizntion of sign I generation. The signal generator is illustrated in FIG. 12. As shown, the sixteen and seventeen stages of the address register are connected to respective AND gates 185, 186, each responsive to an output of the sequence counter and control 40 and the output of comparator 151 indicating the occurrence of an end condition, i.e. the end of a particular buiTer section wherein the current address equals the end address. A plurality of additional AND gates exemplified by AND gates I87, 188 respond to one or the other of AND gates 185, 186 and a unique pair of leads connected respectively to the address section decoder 161 and the priority register decoder 84 of the channel priority access control 75. In this manner, signals are generated on a unique set of signal lines corresponding to the memory butter section and the channel. These signals may be used for any purpose, since they are available on output conductors. Commonly, they are used to activate an interrupt channel to inform the main program of the completion or partial completion of input-output operation. Another important use is in energizing the start and stop lines 162, 163 (FIG. 11) of the I/O channels during the cyclic mode. This makes it possible to instruct a fully automatic butler network.

Another example of the utilization of the E and F signal flags is an operation involving obtaining input data from a magnetic tape record of unknown length. Initially, a bufler is programmed for a storage area large enough to accommodate the data recorded on the magnetic tape. When the last data word arrives from the tape recorder, the signal flags can be activated by the peripheral equipment. Referring now to FIG. 11, the terminate line 16-1 from the peripheral unit is connected to the sequence counter and control 40 for providing a flag request which causes the sequence counter to advance to the three (03) count (see FIG. 6A).

Flow chart of flag request. Referring now to the flow diagram of FIG. 6H, the sequence counter and control 40 causes the end address to be read from the memory into the [/0 address register 110 at count 03. Subsequently, at the four count (04), the end address is rewritten into the memory from the I/O address register and the E and F signal flags generated depending upon which ones are binary ONES. The sequence counter then is reset to its 00 state.

Although an exemplary embodiment has been disclosed and discussed, it will be understood that other applications of the invention are possible and that the embodiment disclosed may be subjected to various changes, 

1. A DATA PROCESSING SYSTEM COMPRISING A PLURALITY OF PERIPHERAL DATA TRANSMITTING AND RECEIVING DEVICES; A PLURALITY OF CHANNEL CONTROL UNITS EACH HAVING RESPECTIVE ONES OF SAID PERIPHERAL DEVICES COUPLED THERETO; A MEMORY SUBSYSTEM HAVING A PLURALITY OF CELL GROUPS UNIQUE TO EACH OF SAID CHANNEL CONTROL UNITS, SAID CELL GROUPS PROVIDING ENCODED INDIRECT START, END AND CURRENT ADDRESSES FOR A PLURALITY OF MEMORY BUFFER AREAS, EACH CELL CONTAINING AN END ADDRESS HAVING AN ADDITIONAL BIT POSITION WHOSE BINARY VALUE DETERMINES WHICH BUFFER AREA IS USED FOLLOWING SAID END ADDRESS, MEANS FOR PROVIDING AN INTERNAL ADDRESS GENERATOR INCLUDING MEANS RESPONSIVE TO THE BINARY VALUE OF SAID PREDETERMINED BIT POSITION. 